Communications systems, and in particular communication switching systems, have in the past been formed of structures which perform functions which are predefined. These communication systems constrain users to communicate in the ways fixed by the communication systems. Thus the users are required to adapt to the constraints of the system, rather than the system adapting to the needs of the users.
Changing a communication system to provide new services is a serious and costly proposition, requiring design of new operating and peripheral software, new hardware, etc. Design and implementation of new software is sometimes dangerous to the entire system, since change to one part of the system software can sometimes affect other parts, in the same or in other shell levels, for which documentation is not clear or accidentally overlooked. Thus to change or add features to a communication system the cost must be incurred of checking the entire system for effects of the change or addition, with risk of error and resulting problems, sometimes but not always obscure, and sometimes only appearing long after the system has been installed. Recent failures of the telephone network used by millions of people in parts of the United States is an example of an obscure communication system control software problem integral to a system not appearing until long after the system has been installed and operating.